package com.bsoft.gol.hcs.enumcase;

import org.apache.commons.lang3.StringUtils;

/**
 * @author：xhf
 * @date ：Created in 2020/3/16 15:48
 * @description：
 * @modified By：
 * @version: $
 */
public enum SysParameterEnum {
	ROUTE_TYPE_FLAG("route_type_flag", "0", "", "电子处方 0 查询线上，1线下", (byte) 1, (byte) 1, (byte) 1, (byte) 1),
	FORMAT_INTERFACE_EXCHANGE("Format_Interface_exchange", "1", "", "接口数据交换格式 1 XML，2 JSON", (byte) 1, (byte) 1, (byte) 13, (byte) 1),
	EXTENSION("extension", "0", "", "是否开通外延处方(0:未开通 1:开通),默认:0",
			(byte) 1, (byte) 1, (byte) 13, (byte) 1),
	AUTO_REVIEW("auto_review", "0", "", "是否开启自动审方(0:未开启 1:开启),默认:0",
			(byte) 1, (byte) 1, (byte) 13, (byte) 1),

	//    /**-------------------------------------------- 病例复印----------------------------------------------------*/
	MRC_ORD_LIM("MRC_ord_lim", "72", "小时", "病历复印订单有效时限", (byte) 1, (byte) 1, (byte) 1, (byte) 1),

	//    /**-------------------------------------------- 处方审核----------------------------------------------------*/
	PR_UNREV_RX("PR_unrev_rx", "5", "", "未审核处方达到n张时，向审方药师发送推送消息", (byte) 1, (byte) 1, (byte) 2, (byte) 1),

	//    /**-------------------------------------------- 注册登录----------------------------------------------------*/
	RL_LOCK_LIM("RL_lock_lim", "4", "", "用户登录时密码输入错误特定次数后锁定输入功能", (byte) 1, (byte) 1, (byte) 3, (byte) 1),
	RL_LOCK_TIME("RL_lock_time", "5", "分钟", "用户登录时密码输入错误特定次数后锁定时间", (byte) 1, (byte) 1, (byte) 3, (byte) 1),

	//    /**-------------------------------------------- 复诊配药----------------------------------------------------*/
	OR_NEED_BUDGET("OR_need_budget", "0", "", "复诊配药_是否需要预结算环节，0：不需要，1：需要，默认0", (byte) 1, (byte) 1, (byte) 4, (byte) 1),
	OR_DOCACCPT_LIM("OR_docaccpt_lim", "24", "小时", "复诊配药_医生接诊时限", (byte) 1, (byte) 1, (byte) 4, (byte) 1),
	OC_COMM_LIM("OC_comm_lim", "24", "小时", "复诊配药_医患沟通时限", (byte) 1, (byte) 1, (byte) 4, (byte) 1),
	OR_RX_OVD_LIM("OR_rx_ovd_lim", "72", "小时", "复诊配药_处方有效时限", (byte) 1, (byte) 1, (byte) 4, (byte) 1),
	OR_RX_PRE_OVD_LIM("OR_rx_pre_ovd_lim", "6", "小时", "复诊配药_处方过期距离时间", (byte) 1, (byte) 1, (byte) 4, (byte) 1),

	//    /**-------------------------------------------- 候诊间----------------------------------------------------*/
	WR_START_NUMB("WR_start_numb", "3", "", "排队叫号提醒的开始值：如设定为10，则在当前患者前还剩10个人时，通过推送提醒当前患者；", (byte) 1, (byte) 1,
			(byte) 5, (byte) 1),
	WR_HIGHFREQ_NUMB("WR_highfreq_numb", "10", "", "排队叫号高频提醒的开始值：如设定为3，则分别在当前患者前还剩3、2、1人时，通过推送提醒当前患者", (byte) 1,
			(byte) 1, (byte) 5, (byte) 1),

	//    /**-------------------------------------------- 检查预约----------------------------------------------------*/
	EA_CXL_APPT_DDL("EA_cxl_appt_ddl", "24", "小时", "检查预约_取消预约提前时间", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
	EA_IS_CHARGE("EA_is_charge", "1", "", "检查预约_预约是否需要先收费,1：需要，0：不需要，默认1", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
	EA_AUTO_CXL_LIM("EA_auto_cxl_lim", "30", "分钟", "检查预约_未收费号源自动释放时间", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
	EA_UPDATE_TIMES("EA_update_Times", "2", "次", "检查预约_同一项目取消改约限制次数，为0是不限制次数", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
	EA_CHECKIN_TYPE("EA_checkin_type", "1", "", "检查预约_签到方式，1：扫码,2：APP，默认1", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
	EA_CHECKIN_DIST("EA_checkin_dist", "200", "米", "检查预约_APP签到定位距离", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
	EA_CHECKIN_ADV_LIM("EA_checkin_adv_lim", "30", "分钟", "检查预约_APP签到提前时间", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
	EA_REAPPT_ADV_LIM("EA_reappt_adv_lim", "6", "小时", "检查预约_重新预约提前时间", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
	EA_CHECK_CORP_IS("EA_check_corp_is", "1", "", "检查开单是否启用协同开单，0：否,1：是", (byte) 1, (byte) 1, (byte) 6, (byte) 1),
//    EA_CHECK_PAY_TIME("EA_check_pay_time", "30", "分钟", "检查预约支付倒计时间", (byte) 1, (byte) 1, (byte) 6, (byte) 1),

	//    /**-------------------------------------------- 健康记录----------------------------------------------------*/
	SCOPE_OF_MR_RE("scope_of_MR_RE", "1", "", "病历查阅范围，1表示可查看就诊人，2表示只能查看本人，默认是1", (byte) 1, (byte) 1, (byte) 7,
			(byte) 1),

	//    /**-------------------------------------------- 就诊人管理----------------------------------------------------*/
	OL_ARCHIVABLE("ol_archivable", "1", "", "是否支持在线建档 1 支持 0 不支持", (byte) 1, (byte) 1, (byte) 8, (byte) 1),

	//    /**-------------------------------------------- 满意度调查----------------------------------------------------*/
	SS_URL("SS_url", "http://wxtest01.atag.bsoft.com.cn/base-service/", "", "满意度消息拼接地址", (byte) 1, (byte) 1, (byte) 9
			, (byte) 1),

	//    /**-------------------------------------------- 排队叫号----------------------------------------------------*/
	CN_CALL_WAITING_NUMBER("CN_call_waiting_number", "5", "", "排队叫号，排在前面的等待人数小于该值时给患者推送排队提醒短信", (byte) 1, (byte) 1,
			(byte) 10, (byte) 1),

	//    /**-------------------------------------------- 签到取号----------------------------------------------------*/
	CI_ISONLINE("CI_IsOnLine", "1", "", "签到取号是否要求支付:1：需要，0：不需要，默认1", (byte) 1, (byte) 1, (byte) 11, (byte) 1),
	CI_RANGE_LIM("CI_range_lim", "1", "公里", "签到取号距离限制", (byte) 1, (byte) 1, (byte) 11, (byte) 1),


	//    /**-------------------------------------------- 体检中心----------------------------------------------------*/
	BE_AUTH_RANGE("BE_Auth_range", "2", "", "体检报告查询权限\n" +
			"1仅限于自己：用户仅可查询当前账号主体（本人）的体检报告 \n" +
			"2 所有人：用户可以依据设定的查询条件，查询所有人的报告",
			(byte) 1,
			(byte) 1, (byte) 12, (byte) 1),

	//    /**-------------------------------------------- 系统设置----------------------------------------------------*/
	QUERY_TYPE("query_Type", "1", "", "查询类型，参数设置，1：按患者标识集合查询；2：按证件集合查询；3：按诊疗卡集合查询；默认是1", (byte) 1, (byte) 1,
			(byte) 13, (byte) 1),
	IM_BASE_INFO("IM_base_info", "{\"mainURL\":\"http://a1.easemob.com/\",\"appKey\": \"1104190422019964#test\"," +
			"\"orgName\": \"110414220199\",\"appName\": \"test\",\"clientID\": \"YXA6FEDDDcGStEemSyPHczTGC7Q11\"," +
			"\"clientSecret\": \"YXA6ApfPrslDDD5ABwwtSYVI_OwN29Q11\",\"adminAccountNO\":5," +
			"\"easeMobGZFilePath\":\"/home/nethospital/3.0.1-master/easemobGZFile\"}", "", "IM账号配置，java后台从这里获取配置信息",
			(byte) 1, (byte) 1,
			(byte) 13, (byte) 1),
	OUTPATIENT_TYPE("outpatient_type", "[ {  \"outpatientTypeKey\": \"outpatientDepartment\",  " +
			"\"outpatientTypeValue\": [   101  ] }, {  \"outpatientTypeKey\": \"cloudVisit\",  " +
			"\"outpatientTypeValue\": [   104  ] }, {  \"outpatientTypeKey\": \"returnVisit\",  " +
			"\"outpatientTypeValue\": [   105  ] }, {  \"outpatientTypeKey\": \"organ\",  \"outpatientTypeValue\": [" +
			" " +
			"  106  ] }, {  \"outpatientTypeKey\": \"imageAble\",  \"outpatientTypeValue\": [   107  ] }, {  " +
			"\"outpatientTypeKey\": \"tel\",  \"outpatientTypeValue\": [   108  ] }, {  \"outpatientTypeKey\": " +
			"\"video\",  \"outpatientTypeValue\": [   109  ] }]", "",
			"门诊类型，设置普通门诊、云诊室、复诊配药、协同门诊、图文、电话和视频问诊对应挂号记录的门诊类别", (byte) 1, (byte) 1, (byte) 13, (byte) 2),
	VIDEO_DOWNLOAD_TIME("video_download_time", "22:00-06:00", "", "视频下载时间区间", (byte) 1, (byte) 1, (byte) 13, (byte) 1),
	CM_MULTI_HOSPITAL_CODE("CM_Multi_hospital_code", "0", "", "查询多院区业务数据机构识别，默认是0", (byte) 1, (byte) 1, (byte) 13,
			(byte) 1),
	MEDICAL_RECORDS_SATRT_TIME("medical_records_satrt_time", "2020-01-01 00:00:00", "", "同步就诊记录开始时间", (byte) 1
			, (byte) 1,
			(byte) 13,
			(byte) 1),
	BASE_SERVICE_ROOT_URL("base_service_root_url", "http://wxtest01.atag.bsoft.com.cn/base-service/", "", "base" +
			"-service服务url", (byte) 1, (byte) 1, (byte) 13, (byte) 1),
	LIS_INSPECTION_REPORT_SATRT_TIME("lis_inspection_report_satrt_time", "2020-01-01", "", "同步LIS" +
			"系统检验报告开始时间,格式yyyy-MM-dd", (byte) 1, (byte) 1, (byte) 13, (byte) 1),
	INSPECTION_REPORT_RETENTION_TIME("inspection_report_retention_time", "730", "天",
			"检验报告保留时间，过期的检验报告从本系统库中删除避免数据过大", (byte) 1, (byte) 1, (byte) 13, (byte) 1),

	//    /**-------------------------------------------- 协同门诊----------------------------------------------------*/
	OA_FEE_TYPE("OA_fee_type", "0", "", "该值为0时是需要患者缴费的，和普通的云诊室预约一样进行缴费（患者自己注册使用app进行缴费），为1" +
			"时费用由上级机构和基层机构线下另行结算，患者无需线上支付费用即可进行协同问题。默认为0。", (byte) 1, (byte) 1, (byte) 14, (byte) 1),

	//    /**-------------------------------------------- 药品配送----------------------------------------------------*/
	OR_EXPR_DDL("OR_expr_ddl", "3", "天", "复诊配药自动确认收货时长", (byte) 1, (byte) 1, (byte) 15, (byte) 1),

	//    /**-------------------------------------------- 预约挂号----------------------------------------------------*/
	OA_APPT_REMIND("OA_appt_remind", "7", "小时", "预约挂号_预约日期前一天N时的提醒", (byte) 1, (byte) 1, (byte) 16, (byte) 1),
	OA_ISCERTIFICATION("OA_IsCertification", "0", "", "预约挂号是否支持无档预约，1：支持，0：不支持，默认是0", (byte) 1, (byte) 1, (byte) 16,
			(byte) 1),
	WHETHER_TO_DISPLAY_HISTORY_SOURCE("whether_to_display_history_source", "{\"flag\":0,\"AMPointTime\":\"12:00:00" +
			"\"," +
			"\"PMPointTime\":\"17:00:00\"}", "", "flag：是否显示历史号源：1是，0否，AMPointTime：上午号源过期时间点，PMPointTime：下午号源过期时间点"
			, (byte) 1, (byte) 1, (byte) 16, (byte) 1),
	COMMON_PREDICTABLE_SCOPE("common_predictable_scope", "0,7", "", "普通门诊预约日期的范围（今天往后的天数，如0,7表示包含今天的显示一周的排班，1," +
			"7则不包括今天）", (byte) 1, (byte) 1, (byte) 16, (byte) 1),
	OA_PAY_TYPE("OA_pay_type", "1", "", "预约挂号是否需要支付:1：需要，0：不需要，默认1", (byte) 1, (byte) 1, (byte) 16, (byte) 1),

	//    /**-------------------------------------------- 云支付----------------------------------------------------*/
	ORDER_EXPIRE_TIME("order_expire_time", "1440", "分钟", "云支付订单过期时间(分钟)", (byte) 1, (byte) 1, (byte) 17, (byte) 1),

	//    /**-------------------------------------------- 在线问诊----------------------------------------------------*/
	OC_REVISIT_RESTRICT("OC_revisit_restrict", "0", "", "预约在线问诊是否启用复诊控制（仅限复诊患者预约），1：要，0：不要，默认0", (byte) 1, (byte) 1,
			(byte) 18,
			(byte) 1),
	OC_DAILY_REMIND2("OC_daily_remind2", "7", "小时", "向医生发送今日互联网诊疗业务有排班的提醒时间点", (byte) 1, (byte) 1, (byte) 18,
			(byte) 1),
	CC_UNCONFIRM("CC_unconfirm", "2", "小时", "超过患者预约时间n小时未确认接诊系统自动拒绝本次问诊,n由系统参数配置", (byte) 1, (byte) 1, (byte) 18,
			(byte) 1),
	OC_NEED_BUDGET("OC_need_budget", "0", "", "在线问诊_是否需要预结算环节：0 不需要 1 需要 默认0", (byte) 1, (byte) 1, (byte) 18,
			(byte) 1),
	OC_TXT_DOCACCPT_LIM("OC_txt_docaccpt_lim", "24", "小时", "图文问诊_无排班模式时医生接诊时限", (byte) 1, (byte) 1, (byte) 18,
			(byte) 1),
	OC_PH_DOCACCPT_LIM("OC_ph_docaccpt_lim", "24", "小时", "电话问诊_无排班模式时医生接诊时限", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_VD_DOCACCPT_LIM("OC_vd_docaccpt_lim", "24", "小时", "视频问诊_无排班模式时医生接诊时限", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_FRONT_LIM("OC_front_lim", "15", "分钟", "在线问诊web端显示红色的提前时间", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_PAY_LIM("OC_pay_lim", "30", "分钟", "在线问诊_订单支付时限", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_VD_COMM_LIM("OC_vd_comm_lim", "24", "小时", "视频问诊_无排班模式时医患沟通时限", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_PH_COMM_LIM("OC_ph_comm_lim", "24", "小时", "电话问诊_无排班模式时医患沟通时限", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_TXT_COMM_LIM("OC_txt_comm_lim", "24", "小时", "图文问诊_无排班模式时医患沟通时限", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_IS_RX("OC_is_Rx", "0", "", "在线问诊是否支持开方，0：不支持，1：支持，默认0", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_IS_TEL("OC_is_Tel", "0", "", "在线问诊是否支持电话，0：不支持，1：支持，默认0", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	BOIL_FEE("boil_fee", "2.00", "元", "草药代煎费用(每帖)", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_COOP_CXL("OC_coop_cxl", "1", "", "协同门诊取消条件： 0无法取消 1未接诊前 预约时间前n小时可取消", (byte) 1, (byte) 1, (byte) 18, (byte) 1),
	OC_COOP_CXL_LIM("OC_coop_cxl_lim", "24", "小时", "协同门诊提前取消时间", (byte) 1, (byte) 1, (byte) 18, (byte) 1),

	//    /**-------------------------------------------- 账户充值----------------------------------------------------*/
	AM_DEF_AMOUNT("AM_def_amount", "100,200,300,400", "", "账户充值推荐充值金额，4个金额，逗号间隔", (byte) 1, (byte) 1, (byte) 19,
			(byte) 1),

	//    /**-------------------------------------------- 住院预缴金----------------------------------------------------*/
	HA_PAY_FLOOR("HA_pay_floor", "50", "", "住院预缴金充值下限", (byte) 1, (byte) 1, (byte) 20, (byte) 1),
	HA_PAY_UPPER("HA_pay_upper", "20000", "", "住院预缴金充值上限", (byte) 1, (byte) 1, (byte) 20, (byte) 1),
	HA_PAY_FREQ("HA_pay_freq", "5", "", "住院预缴金每日充值次数", (byte) 1, (byte) 1, (byte) 20, (byte) 1),
	HA_DAILY_AMOUNT("HA_daily_amount", "50000", "", "住院预缴金每日充值金额", (byte) 1, (byte) 1, (byte) 20, (byte) 1),
	HA_DEF_AMOUNT("HA_def_amount", "1000,2000,3000,4000", "", "住院预缴金推荐充值金额", (byte) 1, (byte) 1, (byte) 20, (byte) 1),

	//    /**-------------------------------------------- 预检分诊----------------------------------------------------*/
	PREXAM_TRIAGE("prexam_triage", "1", "", "参数值为1时启用门诊预约挂号要求填写门诊流调表", (byte) 1, (byte) 1, (byte) 21
			, (byte) 1),
	PREXAM_TRIAGE_TIME("prexam_triage_time", "14", "", "参数值为1时表示1天前的数据有效", (byte) 1, (byte) 1, (byte) 21
			, (byte) 1),

	//    /**-------------------------------------------- 电子发票----------------------------------------------------*/
	EN_OPEN_FLAG("EN_open_flag", "1", "", "是否开通电子发票，1是，0否", (byte) 1, (byte) 1, (byte) 21, (byte) 1),
	EN_PLATFORM_URL("EN_platform_url", "http://10.10.2.85:8500", "", "电子发票平台访问地址", (byte) 1, (byte) 1, (byte) 21, (byte) 1);

	private final String parameterKey;
	private final String parameterDefaultValue;
	private final String parameterUnit;
	private final String parameterRemake;
	//状态（0停用，1启动）
	private final Byte parameterState;
	//是否启动加载（0 不启动加载，1启动加载）
	private final Byte parameterStartLoading;
	//系统参数类别
	private final Byte parameterType;
	//系统参数_级别:1 平台 2 机构
	private final Byte parameterLevel;


	SysParameterEnum(String parameterKey, String parameterDefaultValue, String parameterUnit, String parameterRemake,
					 Byte parameterState, Byte parameterStartLoading, Byte parameterType, Byte parameterLevel) {
		this.parameterKey = parameterKey;
		this.parameterDefaultValue = parameterDefaultValue;
		this.parameterUnit = parameterUnit;
		this.parameterRemake = parameterRemake;
		this.parameterState = parameterState;
		this.parameterStartLoading = parameterStartLoading;
		this.parameterType = parameterType;
		this.parameterLevel = parameterLevel;
	}

	public static SysParameterEnum getSysParameterEnum(String parameterKey) {
		if (StringUtils.isNotBlank(parameterKey)) {
			for (SysParameterEnum sysParameterEnum : values()) {
				if (parameterKey.equals(sysParameterEnum.getParameterKey())) {
					return sysParameterEnum;
				}
			}
		}
		return null;
	}

	@Override
	public String toString() {
		return "SysParameterEnum{" +
				"parameterKey='" + parameterKey + '\'' +
				", parameterDefaultValue='" + parameterDefaultValue + '\'' +
				", parameterUnit='" + parameterUnit + '\'' +
				", parameterRemake='" + parameterRemake + '\'' +
				", parameterState=" + parameterState +
				", parameterStartLoading=" + parameterStartLoading +
				", parameterType=" + parameterType +
				", parameterLevel=" + parameterLevel +
				'}';
	}

	public String getParameterKey() {
		return parameterKey;
	}

	public String getParameterDefaultValue() {
		return parameterDefaultValue;
	}

	public String getParameterUnit() {
		return parameterUnit;
	}

	public String getParameterRemake() {
		return parameterRemake;
	}

	public Byte getParameterState() {
		return parameterState;
	}

	public Byte getParameterStartLoading() {
		return parameterStartLoading;
	}

	public Byte getParameterType() {
		return parameterType;
	}

	public Byte getParameterLevel() {
		return parameterLevel;
	}
}
